﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Entidades.Karaoke;
using Datos.Karaoke;
using Datos.Caja;


namespace Negocio.Karaoke
{
    public class KarBoxBLL
    {
        public static List<KarBox> ListarBox( )
        {
            try
            {
                return KarBoxDAL.ListarBox( );
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        public static KarBox ObtenerBox(int NroBox)
        {
            try
            {
                return KarBoxDAL.ObtenerBox( NroBox);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }


        /**
         * recibe el numero de box o de mesa
         * recibe el tipo que indica si es box o mesa
         * recibe el estado en el que se encuentra
         * si el estado indica que esta activo se procedera a liberarlo, para ello se obtiene el id del
         * servicio que le correponde a ese box o mesa para luego validar que tenga pago.
         * 
         * si el estado indica que esta libre y se quiere activar se genera un registro en la tabla servicio y
         * se cambia el esstado del box o mesa
         **/ 
        public static int actualizar(int nro, int tipo, Boolean estado)
        {
            try
            {
                System.Diagnostics.Debug.WriteLine("actualizar Box/Mesa nro  " + nro + "  tipo  " + tipo + "  estado " + estado) ;
                CajPago pago = null;
                
                    if (estado == false) { // LIBERAR
                        System.Diagnostics.Debug.WriteLine(" tengo que liberar ");
                        KarServicio srv = KarServicioDAL.Instance().ObtenerServicioActual(nro, tipo);
                        System.Diagnostics.Debug.WriteLine("idServicio =  " + srv.idServicio);

                        System.Diagnostics.Debug.WriteLine("valido el pago para el servicio " + srv.idServicio);
                        pago = CajPagoDAL.ValidaPagoServicio(srv.idServicio);

                        System.Diagnostics.Debug.WriteLine("quiero liberar xq estado =  " + estado);
                        if (pago != null)
                        {
                            System.Diagnostics.Debug.WriteLine(" puedo liberarla xq hay pago");


                            KarServicioDAL.Instance().finalizarServicio(srv.idServicio);
                            return KarBoxDAL.actualizar(nro, tipo, estado);
                        }
                        else
                        {
                            System.Diagnostics.Debug.WriteLine("no la libero xq no hay pago ");
                            throw new Exception("no ha pagado");
                        }
                    } else {
                        System.Diagnostics.Debug.WriteLine("quiero activar, genero regitro del servicio ");
                        KarServicio servicio = new KarServicio();
                        servicio.idTipoServicio = tipo;
                        servicio.numero = nro;
                        System.Diagnostics.Debug.WriteLine(" registro servicio ");
                        KarServicioDAL.Instance().registrarServicio(servicio);
                        System.Diagnostics.Debug.WriteLine(" actualizo recurso ");
                        return KarBoxDAL.actualizar(nro, tipo, estado);
                    }   
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
    }
}
